home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs52.d81
/
vis6b4.sda
/
DIRVIEW.PRG
(
.txt
)
next >
Wrap
Commodore BASIC
|
2009-10-10
|
2KB
|
115 lines
1 REM RICK MOSDELL SAT25MAR95 9PM
2 REM VIEW/PRINT DIRECTORY FROM BASIC
3 REM PRINTER ASSUMED DEV#4 AND ON
4 :
10 A$="":B$="":C$="":I=0:HI=0:LO=0:L=0
20 ZE$=CHR$(0):QU$=CHR$(34):HD$=""
30 DN$="":DI$="":DF$=""
40 DV=PEEK(186):NF=0:MX=250:PN=0:BL=0
42 EN=0:EM$="":ET=0:ES=0:FL=3
44 TE=PEEK(646):BD=PEEK(53280):BK=PEEK(53281)
46 POKE646,3:POKE53280,0:POKE53281,0
50 DIM TY$(4),T(4)
60 DIM F$(MX),LE(MX),TY(MX)
70 PRINT"[147]";"";TAB(4);"[194][193][211][201][195] [196]IRECTORY [214]IEWER/[208]RINTER"
71 PRINTTAB(5);"[159](C) [153][205]ARCH 1995 [158][205]OZART[146][159]/[214]ISION"
72 PRINTTAB(7);"[159]RELEASED UNDER [154][208]OWER[211]OFT"
73 PRINT"[159][208]RINTER ASSUMED TO BE DEVICE 4 AND ON"
74 PRINT"[159][207]UTPUT TO ([158][211][159])CREEN OR ([158][208][159])RINTER ... ";
75 GOSUB1300:PRINT "[158]";A$;"[159]"
76 IF A$="P" THEN FL=FL+1
77 CLOSEFL:OPENFL,FL,7
79 :
100 FOR I=0 TO 4
110 T(I)=I:NEXT
119 :
120 TY$(0)="DEL"
121 TY$(1)="SEQ"
122 TY$(2)="PRG"
123 TY$(3)="USR"
124 TY$(4)="REL"
129 :
130 CLOSE15:OPEN15,DV,15:CLOSE15
132 IF ST<>0 THEN PRINT"DEVICE";DV;"NOT PRESENT":GOTO900
139 :
150 OPEN15,DV,15
180 PRINT:PRINT"[153]READING DIRECTORY DEVICE";DV;
190 CLOSE1:OPEN1,DV,0,"$0:*"
192 GOSUB1100:IF EN>19 AND EN<>73 THENCLOSE1:GOTO900
199 :
200 FOR I=0 TO 3:GET#1,A$:NEXT
201 GET#1,A$:IF A$="" THEN A$=ZE$
202 PN=ASC(A$):GET#1,A$
210 GET#1,A$:HD$=HD$+A$
230 IF A$<>"" THEN210
300 GET#1,A$:GET#1,A$
301 GET#1,A$:IF A$="" THEN A$=ZE$
302 LO=ASC(A$)
304 GET#1,A$:IF A$="" THEN A$=ZE$
306 HI=ASC(A$)
310 GET#1,A$:IFA$=" "ORA$=""THEN310
320 IFA$<>QU$THENCLOSE1:PRINT"[159]":GOTO400
330 B$=""
340 GET#1,A$:IFA$=QU$THEN360
350 B$=B$+A$:GOTO340
360 F$(NF)=B$
362 LE(NF)=(256*HI)+LO
370 GET#1,A$:IF A$=" " THEN370
380 IF A$="D" THEN TY(NF)=0:GOTO388
381 IF A$="S" THEN TY(NF)=1:GOTO388
382 IF A$="P" THEN TY(NF)=2:GOTO388
383 IF A$="U" THEN TY(NF)=3:GOTO388
384 IF A$="R" THEN TY(NF)=4
388 NF=NF+1
389 GET#1,A$:IF A$<>""THEN389
397 PRINT".";
398 GOTO300
399 :
400 BL=(256*HI)+LO
410 A$=MID$(HD$,3,16):GOSUB1200:DN$=A$
420 DI$=MID$(HD$,21,2)
430 DF$=MID$(HD$,24,2)
440 A$=STR$(PN):GOSUB1000:B$=A$
450 A$=STR$(BL):GOSUB1000
470 PRINT#FL:PRINT#FL,B$;" ";DN$;"[146] ";DI$;" ";DF$;" ";
480 PRINT#FL,A$;" FREE"
499 :
500 IF NF<1 THEN900
505 FOR I=0 TO NF-1
510 A$=STR$(LE(I)):GOSUB1000
520 L=LE(I)
530 IF L<1000 THEN PRINT#FL," ";
540 IF L<100 THEN PRINT#FL," ";
550 IF L<10 THEN PRINT#FL," ";
560 PRINT#FL,A$;" ";:B$=F$(I)
570 PRINT#FL,B$;SPC(17-LEN(B$));
580 PRINT#FL,TY$(TY(I))
590 NEXT
599 :
900 PRINT#FL,"":CLOSEFL
901 CLOSE15
902 POKE646,TE:POKE53280,BD:POKE53281,BK
903 CLR:END
999 :
1000 REM CHOP LEADING NUMERICAL BLANKS
1010 A$=RIGHT$(A$,LEN(A$)-1)
1020 RETURN
1099 :
1100 REM DRIVE ERROR CHECK
1110 INPUT#15,EN,EM$,ET,ES
1120 IF EN<20 OR EN=73 THEN RETURN
1130 PRINT EN;EM$;ET;ES
1140 RETURN
1199 :
1200 REM CHOP TRAILING BLANKS
1210 IF " "<>RIGHT$(A$,1) THEN RETURN
1220 L=LEN(A$)
1230 IF L=1 THEN A$=ZE$:RETURN
1240 A$=LEFT$(A$,L-1)
1250 GOTO1200
1299 :
1300 REM PAUSE
1310 GET A$:IF A$="" THEN1310
1320 RETURN
1399 :